/**
* All Rights Reserved , Copyright (C) 2021 , 青岛鼎信通讯股份有限公司
*
* ISdProjectService
* SD项目立项
*
* 修改纪录
* 2021-11-22 版本：1.0 jiangtao 创建。
* @version 版本：1.0
* @author 作者：jiangtao
* 创建日期：2021-11-22
*/

package com.topscomm.gpm.service;

import com.topscomm.pub.vo.ResponseResult;
import com.topscomm.gpm.IGpmService;
import com.topscomm.gpm.pojo.GpmProjectEntity;
import com.topscomm.gpm.dao.IGpmProjectDao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface IGpmProjectService extends IGpmService<GpmProjectEntity, IGpmProjectDao> {
	/***
	 * @description: 新增和保存函数
	 * @param inputMap
	 * @return
	 * @author: jiangtao1
	 * @date: 2021/11/24 15:33
	 * @modify:
	 */
	Map<String, Object> doSave(Map<String, Object> inputMap);

	/***
	 * @description: 获取合同产品信息
	 * @param paraMap
	 * @return
	 * @author: jiangtao1
	 * @date: 2021/11/25 9:36
	 * @modify:
	 */
	List<Map<String, Object>> copyProductInfo(Map<String, Object> paraMap);

	/***
	 * @description: 立项提交申请审批
	 * @param paraMap
	 * @return
	 * @author: jiangtao1
	 * @date: 2021/11/30 8:56
	 * @modify:
	 */
	void doProjectApproval(Map<String, Object> paraMap);

	/***
	 * @description: 添加SD立项历史相关信息
	 * @param projectcode
	 * @return
	 * @author: jiangtao1
	 * @date: 2021/12/30 13:52
	 * @modify:
	 */
	void generateHistoryInfo(String projectcode);
	/**
	 * @author: houyuhang
	 * @date: 2022-01-04
	 * @description: 执行项目异常状态检测
	 * @modify:
	 */
	void executeCheckJob();
	/**
	 * @author: houyuhang
	 * @date: 2022-01-04
	 * @description: 即将超期项目、里程碑、任务，提前一天进行提醒。
	 * @return: com.topscomm.pub.vo.ResponseResult<java.lang.Object>
	 * @modify:
	 */
	ResponseResult<Object> willExpireRemind();
	/**
	 * @author: houyuhang
	 * @date: 2022-01-07
	 * @description: 根据机会点编号获取销售项目编号
	 * @modify:
	 */
	Map<String,Object> mpmProjectCode(Map<String, Object> paraMap);
	/**
	 * @author: zhangjunyao
	 * @date: 2022-01-18
	 * @description: 判断决策组会签节点是否有人退回
	 * @modify:
	 */
	boolean ifApprovalBack(String projectId);

	/**
	 * @author: zhangjunyao
	 * @date: 2022-01-18
	 * @description: 重写立项取消审批方法，修改sourcetype获取逻辑
	 * @modify:
	 */
	void executeDelApprove(String id);

	/***
	 * @description:
	 * @param projectname
	 * @param projectlevel
	 * @param sourceid
	 * @param sourcetype
	 * @return
	 * @author: jiangtao1
	 * @date: 2022/5/16 16:02
	 * @modify:
	 */
	void sendMessagetoSdLeader(String projectname, String projectlevel,String usercodes,String sourcetype,long sourceid);

	/***
	 * @description: 获取项目执行情况
	 * @param tempList
	 * @return
	 * @author: jiangtao1
	 * @date: 2022/6/1 15:45
	 * @modify:
	 */
	 HashMap<String,String> getProjectState(List<Map<String,Object>> tempList);

	 /***
	  * @description: 修改项目经理
	  * @param paraMap
	  * @return
	  * @author: jiangtao1
	  * @date: 2022/7/28 9:58
	  * @modify:
	  */
	 void changeOwner(Map<String, Object> paraMap);

	 /***
	  * @description: 查询是否有变更项目经理权限
	  * @param tempList
	  * @return
	  * @author: jiangtao1
	  * @date: 2022/7/29 9:43
	  * @modify:
	  */
	void dealWithChangeOwnerPermission(List<Map<String, Object>> tempList);

	/***
	 * @description: 置顶功能
	 * @param paraMap
	 * @return
	 * @author: jiangtao1
	 * @date: 2022/8/9 14:29
	 * @modify:
	 */
	String changeTop(Map<String, Object> paraMap);

}
